package com.zhihuishu.micro.course.openapi.app;

import java.util.List;
import java.util.Map;

import com.zhihuishu.micro.course.openapi.app.dto.ChapterWebDto;
import com.zhihuishu.micro.course.openapi.app.dto.CourseTeacherWebDto;
import com.zhihuishu.micro.course.openapi.app.dto.CourseWebDto;
import com.zhihuishu.micro.course.openapi.app.dto.ScoreAssessRuleWebDto;
import com.zhihuishu.remote.RemoteException;
import com.zhihuishu.remote.RemoteResult;

/**
 * App课程接口
 * 
 * @author zhanglikun
 * @date 2016年1月13日 下午6:37:36
 */
public interface AppCourseOpenService {

    /**
     * 查询课程ID数组查询课程集合(哈希结构，课程ID为Key，课程对象为值)
     * 
     * @param courseIds
     * @return
     * @throws RemoteException
     */
    RemoteResult<Map<Long, CourseWebDto>> queryCourseInfos(long... courseIds) throws RemoteException;

    /**
     * 查询课程教师(哈希结构，课程ID为Key，值为教师列表)
     * 
     * @param courseIds
     * @return
     * @throws RemoteException
     */
    RemoteResult<Map<Long, List<CourseTeacherWebDto>>> queryCourseTeachers(long... courseIds)
            throws RemoteException;

    /**
     * 根据指定课程下章节列表
     * 
     * @param courseId
     * @return
     * @throws RemoteException
     */
    RemoteResult<List<ChapterWebDto>> queryChapterInfos(long courseId) throws RemoteException;

    /**
     * 根据课程id查询考核标准信息
     * 
     * @param courseId
     * @return
     * @throws RemoteException
     */
    RemoteResult<ScoreAssessRuleWebDto> findScoreAssessRuleByCourseId(long courseId) throws RemoteException;

    /**
     * 
     * @discription 创建课程
     * @param courseName 课程名称
     * @param schoolName 学校名称
     * @param createUser 创建者
     * @return
     */
    RemoteResult<CourseWebDto> create(String courseName, String schoolName, long createUser,
            String createUserName) throws RemoteException;

    /**
     * 用户创建的课程数量
     * 
     * @param userId
     * @return
     * @throws RemoteException
     */
    RemoteResult<Integer> userCourseCount(long userId) throws RemoteException;

    /**
     * 删除课程
     * 
     * @author yulijin
     * @date 2016年11月2日 下午6:18:19
     * @param courseId
     * @return
     * @throws RemoteException
     */
    RemoteResult<Void> delCourseByCourseId(Long courseId, Long userId) throws RemoteException;
    
   

    
}
